package net.thelostlands.plugins.thelostfortress;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.text.ParseException;
import java.util.HashMap;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent;

/**
 *
 * @author fabio
 */
public class CommandHandler implements CommandExecutor {

    HashMap<String, Block> firstCorners = new HashMap<String, Block>();
    Block kataBlock;

    @Override
    public boolean onCommand(CommandSender sender, Command command, String commandlabel, String[] args) {
        if (sender instanceof ConsoleCommandSender) {
            return false;
        } else if (sender instanceof Player) {
            Player p = (Player) sender;
            if (command.getName().equals("fortress")) {
                Block b = p.getLocation().getBlock();

                if (args == null || args.length < 1) {
                    if (Main.area.find(b.getX(), b.getY() - 1, b.getZ())) {
                        String m = "Fortezza ";
                        String f = Main.area.propertyOf(p.getLocation());
                        m+=  f == null ? "." :" di "+f;
                        p.sendMessage(ChatColor.RED + m);
                    } else {
                        p.sendMessage(ChatColor.GREEN + "Non siamo in una fortezza.");
                    }
                    return true;
                }
                else if(args[0].compareTo("status")==0){
                    p.sendMessage(ChatColor.GREEN+(Main.guerraAttiva ? "Guerra attiva" : "Pace"));
                    p.sendMessage(ChatColor.GREEN+(Main.construction ? "Costruzione attiva" : "Costruzione sospesa"));
                    return true;
                }
                else if (!Main.permissions.has((Player) sender, "thelostfortress.admin")) {
                    p.sendMessage(ChatColor.RED + "Non hai permessi sufficienti.");
                    return true;
                } 
                else if(args[0].compareTo("reload")==0){
                    Main.one.reloadConfig();
                    Main.one.reloadFortressFromFile();
                    p.sendMessage("Impostazioni e fortezze ricaricate da config.yml");
                    return true;
                }
                else if (args[0].compareTo("corner1") == 0) {
                    if (Main.mondo == null) {
                        Main.mondo = b.getWorld().getName();
                    } else if (Main.mondo.compareTo(b.getWorld().getName()) != 0) {
                        p.sendMessage(ChatColor.RED + "Questo plugin funziona solo in un mondo.");
                        return true;
                    }
                    firstCorners.put(sender.getName(), b);
                    p.sendMessage(ChatColor.GREEN + "Blocco registrato, vai dal secondo e lancia /fortress corner2.");
                    return true;
                } else if (args[0].compareTo("corner2") == 0) {
                    Block firstB = firstCorners.remove(p.getName());

                    if (firstB == null) {
                        p.sendMessage(ChatColor.RED + "Non ricordo che hai salvato nessun blocco, riprova con /fortress corner1.");
                        return true;
                    } else {
                        Main.area.insert(firstB.getX(), b.getX(), firstB.getY(), b.getY(), firstB.getZ(), b.getZ());
                        Main.area.store();
                        p.sendMessage(ChatColor.GREEN + "Fortezza registrata con successo.");

                    }
                    return true;
                } else if (args[0].compareTo("remove") == 0) {
                    if (Main.area.remove(Main.area.find(b))) {
                        p.sendMessage(ChatColor.GREEN + "Fortezza rimossa.");
                        Main.area.store();
                    } else {
                        p.sendMessage(ChatColor.RED + "Non siamo in una fortezza.");
                    }
                    return true;
                } else if (args[0].compareTo("stop") == 0) {
                    Main.guerraAttiva = false;
                    p.sendMessage(ChatColor.GREEN + "Fortezze svuotate e inaccessibili");
                    return true;
                } else if (args[0].compareTo("start") == 0) {
                    Main.guerraAttiva = true;
                    p.sendMessage(ChatColor.GREEN + "Fortezze accessibili!");
                    return true;
                } else if (args[0].compareTo("construction") == 0) {
                    if (Main.construction) {
                        Main.construction = false;
                        p.sendMessage(ChatColor.RED + "Ora non possono più costruire!");
                    } else {
                        Main.construction=true;
                        p.sendMessage(ChatColor.GREEN+"Ora possono costruire");
                    }
                    return true;
                }
            }
        }


        return false;

    }
}
